﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tanmia.Basis.Core;
using System.ComponentModel.DataAnnotations;

namespace Tanmia.Warehouse.Core
{
    /// <summary>
    /// المستودع
    /// </summary>
    public class Store : BaseBusinessObject, IStorageSection
    {
        private int storeID;
        private string engName;
        private string notes;
        private Branch branch;

        /// <summary>
        /// رقم تعريف المستودع
        /// </summary>
        [Display(Name = "رقم المستودع: ", ShortName = "رقم المستودع", Order = 0)]
        public virtual int StoreID
        {
            get { return storeID; }
            set { SetValue<int>("StoreID", ref  storeID, value); }
        }

        /// <summary>
        /// اسم المستودع باللغة الإنكليزية
        /// </summary>
        [Display(Name = "الأسم الأجنبي: ", ShortName = "الاسم الأجنبي", Order = 0)]
        public virtual string EngName
        {
            get { return engName; }
            set { SetValue<string>("EngName", ref engName, value); }
        }

        /// <summary>
        /// ملاحظات
        /// </summary>
        [Display(Name = "ملاحظات: ", ShortName = "ملاحظات", Order = 0)]
        public virtual string Notes
        {
            get { return notes; }
            set { SetValue<string>("Notes", ref notes, value); }
        }

        /// <summary>
        /// الفرع الذي يتبع له المستودع الحالي
        /// </summary>
        [Display(Name = "الفرع: ", ShortName = "الفرع: ", Order = 0)]
        public virtual Branch Branch
        {
            get { return branch; }
            set { SetValue<Branch>("Branch", ref branch, value); }
        }

        #region IStorageSection Members

        private string name;
        private string abbreviation;
        private IList<IStorageSection> subsection;

        /// <summary>
        /// اسم المستودع
        /// </summary>
        [Display(Name = "اسم المستودع: ", ShortName = "اسم المستودع", Order = 0)]
        public virtual string Name
        {
            get { return name; }
            set { SetValue<string>("Name", ref name, value); }
        }

        /// <summary>
        /// الحروف الأولى من اسم المستودع
        /// </summary>
        [Display(Name = "رمز المستودع: ", ShortName = "رمز المستودع", Order = 0)]
        public virtual string Abbreviation
        {
            get { return abbreviation; }
            set { SetValue<string>("Abbreviation", ref abbreviation, value); }
        }

        /// <summary>
        /// الغرف الموجودة داخل المستودع
        /// </summary>
        public virtual IList<IStorageSection> Subsection
        {
            get { return subsection; }
            set { SetValue<IList<IStorageSection>>("Subsection", ref subsection, value); }
        }

        #endregion
    }
}
